Электроника без границ.
В этой работе ны будем исследовать прямой режим работы радиомодуля SI4432. Прямой режим интересен прежде всего потому что он дает полную свободу для разработчика где вы можете самостоятельно создавать протоколы для своих устройств передачии приема и данных а также слушать и захватывать чужие данные. В данной статье будет показан пример захвата пакета передачи данных от брелка автолигнализации StarLine A93. Далее полученый пакет будет выведен на LCD hd44780. После чего мы создадим свой протокол передачи данных для FSK и OOK модуляции и проведем проверку его работоспособности в полевых условиях, Определим дальность приема в условиях города и за его пределами.
Для нашей работы мною был разработан модуль объединяющий в себе SI4432 и STM32f103CBT6 связанные между собой интерфейсом SPI . Ножки GPIO радиомодуля для минимизации подключения не ипользуются также я считаю возможным не подключать выход прерывания nIRQ заменив его паузой перед инициализацией в исходниках. К нашему контроллеру по интерфейсу I2C подключена небольшая 6-ти кнопочная клавиатура и LCD hd44780. Устройства ввода вывода находятся на одной шине I2C и подключены на различных адресах по 4-х проводной схеме через расширители портов pcf8574. Напряжение питания всех устройств 3.3в. Источник питания регулятор ams1117-3.3 расположен на плате. Разводка платы выполнена в Proteus заказана и изготовлена в seeedstudio.com. Схема и фото платы приведены ниже.
Схема.
Устройство в сборе.
Неоценимую помощь в рвботе оказал RTL-SDR приемник нажимаем кнопочку на брелке сигнализации и видим как с него уходят пакеты импульсов. К сожалению у меня нет источника эталонного сигнала для настройки SDR приемника поэтому будем считать что частота приблизительна равна 433.92 мгц( +- 0.2мгц) на скрине ниже виднеются две симетричные горки из чего делаем вывод что наш передатчик использует FSK модуляцию. Расстояние между горками называется девиацией приблизительно равно 25 кгц, эта цифра нам понадобится при настройке нашего приемника.
А вот здесь собственно наш пакет состоящий из 15 одинаковых фреймов. Вначале я считал что такое количество одинаковых фреймов говорит об отсутствии CRC на поверку оказывается что так много одинаковых фреймов брелок (с обратной связью) отсылает если не получает ответного сигнала от автомобиля. В случае когда автомобиль рядом пакет ограничивается одним максимум двумя фреймами.
На следующем рисунке изображены два симетричных фрейма это и есть наш FSK сигнал.
Увеличим переднюю часть фрейма для вычисления времени импульса с минимальной длинной. Возьмем 15 импульсов и высчитаем среднее врямя одного импульса. 0.003с разделим на 30 ипульсов получим ширину единичного импульса равную 100мкс эта величина понадобится нам в нашей программе через этот промежуток времени мы будем опрашивать вход MOSI STM32f103.
И так поговорим об уязвимости. Брелок передатчика излучает 15 одинаковых фреймов в случае когда не получает ответного сигнала от блока приемника автомобиля. Например запасной брелок не имеет обратной связи и всегда отсылает 15 фреймов.
В случае если приемник авто получит сигнал искаженной формы или не весь сигнал он посчитает что это сигнал от брелка другого автомобиля или вообще не валидный сигнал. Запись самого сигнала и повторное воспроизведение результата не даст результата так как часть кода какждый раз меняется в динамике. Есть два способа получить валидный сигнал. Это наложить помеху заранее определенной длинны на сигнал брелка, тогда блок приемника авто не сможет распознать сигнал ,а мы путем перебора будем менять искаженную часть сигнала до момента срабатывания. У меня получалось наложить помеху всего в 2 мс. в среднюю часть сигнала на максимальной мощности 20дб SI4432 с расстояния в 30 метров приемник автомобиля гарантированно не мог прочитать сигнал от брелка. На рисунке амплитуда помехи выражена не так высоко над уровнем сигнала так как мне пришлость поднести брелок практически к самой антене SDR приемника иначе на фоне помехи сигнал вообще не виден. Хотя надо отдать должное разработчикам сигнализации, я надеялся на то что расстояние с которого будет происходить глушение будет гораздо больше. В реультате манипуляций мы получим валидный фрейм с искаженной частью в 2 мс., а это 20 бит информации примерно 2 миллиона комбинации перебирать такое количество комбинаций кода -долгое занятие.
Способ второй мы будем наклаывать помехи в каждый полученный от брелка фрейм в разные части сигнала в начало четного и в конец нечетного фрейма а затем сложим фреймы удалив дефектные части. Смотрим ниже на рисунок.
Таким простым способом мы легко получили копию сигнала для однократного снятия с охраны автомобиля с сигнализацией StarLine A93. Также хочу заметить что этот способ подойдет и для других сигнализаций подобного типа различных шлагбаумов и тд.
Видео с работой устройства.
Альтернативный метод-"хак брелка". У нас на руках валидный ключ для однократного отключения режима охраны сигнализации. Для полной эдентичности сигнала я решил воспользоваться штатным радиомодулем который находиться в дополнительном брелке, сигнализации без обратной связи. Вскрыв брелок я обнаружил две микросхемы это контроллер PIC18F25K20 и радиомодуль Wintec W84R01AQF на последний я даташит не нашел. Опытным путем было установлено что между собой микросхемы соединяются по трем линиям без учета питания. Причем на пины контроллера PIC18F25K20 согласно даташиту, приходятся интерфейсы I2C и SPI.
К линиям соединяющим микросхемы был подключен логический анализатор.
После чего нажав главную кнопку на брелке, логический анализатор поймал исходящий пакет представляющий не что иное как SPI протокол. В переданном SPIсигнале имеются статические и динамические части по своей структуре похож на сигнал SI4432 в котором статическая часть это побудка ,инициализация и погружение в спячку радиомодуля. Динамическая это передаваемый ключ.
На нижнем рисунке увеличеная одна из четырех повторяющихся динамических частей-ключ. Посмотрите внимательнее ничего не напоминает.
Сохраняем наш лог файл в формате Excel. Затем в программе LabVIEW мы заменим динамическую часть на полученную нами ранее. На следующем рисунке изображана блок диаграмма LabVIEW которая считывает лог из файла Excel и отправляет его в контроллер через мост CDC-USB для дальнейшего воспроизведения.
Продолжение следует.
You can contact the developers of the project freelemelectronic.com by e-mail:
freelimelectronic@gmail.com.